import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import './styles/global.css'
import App from './App.vue'
import router from './router'
import store from './store'

// 性能监控
const startTime = performance.now()

// 错误边界处理
window.addEventListener('error', (event) => {
  console.error('Global error:', event.error)
  // 可以在这里添加错误上报逻辑
})

window.addEventListener('unhandledrejection', (event) => {
  console.error('Unhandled promise rejection:', event.reason)
  // 可以在这里添加错误上报逻辑
})

// 应用初始化函数
async function initializeApp() {
  try {
    const token = localStorage.getItem('token')
    if (token) {
      console.log('main.js: 检测到 token，尝试获取用户信息...')
      store.commit('auth/SET_TOKEN', token)
      await store.dispatch('auth/getProfile')
      console.log('main.js: 用户信息获取成功')
    }
  } catch (error) {
    console.error('main.js: 初始化时获取用户信息失败:', error)
    await store.dispatch('auth/logout')
  }

  // 创建应用实例
  const app = createApp(App)
  
  // 全局错误处理
  app.config.errorHandler = (err, vm, info) => {
    console.error('Vue error:', err, info)
  }

  app.use(ElementPlus)
  app.use(router)
  app.use(store)

  // 挂载应用
  app.mount('#app')
  
  // 性能监控
  const endTime = performance.now()
  console.log(`应用启动耗时: ${(endTime - startTime).toFixed(2)}ms`)
}

// 启动应用
initializeApp()